Classmethod AI Talks(CATs) #6 「マルチモーダルRAGやってみた」というタイトルで登壇しました #catalks
こんにちは、リテールアプリ共創部のたにもんです。
2024年10月30日(水)に開催されたClassmethod AI Talks(CATs) #6 「生成AIサービス開発の実践 - 周辺技術を基礎から応用までキャッチアップ!」にて「マルチモーダルRAGやってみた」というタイトルで登壇しました。
Classmethod AI Talks(CATs)とは?
クラスメソッド株式会社では、長らく自社ブログ『DevelopersIO』に於いて様々なアウトプットを行ってきました。最近は生成AIについても積極的な情報発信を行っており、読者の皆様から色々な反響、反応を頂いています。
そんな中で、生成AIに興味関心をお持ちの方々とより積極的なやり取り、交流を行いたいと思い、この度「クラスメソッド発」の生成AIコミュニティを立ち上げることにしました。
なお、コミュニティ名の中に「Classmethod」と入っていますが、クラスメソッド側からの発信だけではなく、参加者の皆様との相互コミュニケーションを図っていければと考えています。
生成AIに興味関心をお持ちの方、生成AIについて色々語りたい!という方の参加をお待ちしています。
登壇資料
当日発表した内容は以下のスライドです。
なお、今回発表した内容は以下のブログでより詳しく説明しているので、気になる方はご覧ください。
Q&A
当日、以下の質問を頂いたのですが、その場で回答できなかったのでここで回答したいと思います。
アプローチ3つにそれぞれメリデメありますが、どのユースケースにどのパターンがいいのでしょうか?
アプローチ1: すべてのモダリティを同じベクトル空間に埋め込む
このアプローチは以下のようなユースケースに適していると考えています。
- RAGに与える画像やテキストの内容がシンプルな場合
- 高速な応答速度が要求される場合
- 既存のテキストベースのRAGシステムを低工数でマルチモーダル化したい場合
理由は以下のとおりです。
- 扱う画像やテキストがシンプルな場合、マルチモーダル埋め込みモデルの精度が問題になりにくい
- 他のアプローチと比較して、検索処理のオーバーヘッドが少ないため比較的処理が高速
- データ準備フェーズにおいて、埋め込みモデルをマルチモーダルなものに置き換えだけで対応可能
アプローチ2: モダリティごとに異なるストアを用意する
このアプローチは以下のようなユースケースに適していると考えています。
- 多様なモダリティのデータを扱う必要がある場合
- 扱うデータが複雑な場合
- 高い回答精度が求められる場合
- 構築や運用に充てられるリソースが比較的多い場合
理由は以下のとおりです。
- 各モダリティに特化したモデルを使用できるため、高い精度が期待できる
- 各モダリティごとに柔軟な前処理を行えるため、チューニングによって精度を向上できる
- モデルやリランカーの選定やチューニングが必要なため、必要なリソースが比較的多い場合
アプローチ3: すべてのモダリティを1つの主要なモダリティにまとめる
このアプローチは以下のようなユースケースに適していると考えています。
- 扱うデータのモダリティが特定の1つのモダリティに偏っている場合
- モダリティの変換によって一部の情報が失われることを許容できる場合
- 例: 音声データをテキストに変換する際に、声色やアクセントなどが失われることを許容できる
- マルチモーダル埋め込みベクトルモデルのチューニングや選定を行うためのスキルやリソースが十分でない場合
理由は以下のとおりです。
- モダリティの変換によって一部の情報が失われることが問題になりにくい
- マルチモーダル埋め込みモデルやリランカーが不要